/*
 * @Author: your name
 * @Date: 2022-03-14 20:51:27
 * @LastEditTime: 2022-03-15 18:31:05
 * @LastEditors: your name
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \hand-wirte-code\Object.js
 */
/**
 * Object 方法
 * */ 
/**
 * 创建方法
 * new Object() 构造函数
 * {} 字面量
 * */
// Object.assign 可以复制一个对象(浅拷贝),合并对象，合并对象的相同名称属性，后边会把前边的覆盖
// let obj1 = {name: 'zaike'}
// let obj2 = {age: '18'}
// let obj3 = Object.assign(obj1)
// console.log(obj3.age=3,obj1)

// Object.create() 创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。
// 通过new Object() 创建的对象时__proto__原型时Object对象,并且obj2是有值。
// let obj1 = {name:'zaike'}
// let obj2 = new Object(obj1)
// obj2.age = '18'
// console.log(obj2, obj2.__proto__, obj2.name,obj1)

// Object.create() 创建的对象，对象原型是创建的对象obj4,并且给obj4赋值不影响obj3，obj4.name的值是从原型链上找到的
// let obj3 = {name:'zaike'}
// let obj4 = Object.create(obj3)
// obj4.age = '18'
// console.log(obj4, obj4.__proto__, obj4.name,obj3)

//  Object.freeze() 冻结对象,不能修改

// let obj={name:'zaike'}

// Object.freeze(obj)
// obj.age = '18'
// console.log(obj)

// Object.defineProperty() 给对象添加一个属性并指定该属性的配置。
// let obj={}
// Object.defineProperty(obj, 'title', {
//     value: 'zaike',
//     writable: false   // 是否可改
// })
// obj.title = 'heheda'

// const obj={
//     name:'zaike',
//     age:'18',
//     "type list":'shuaige'
// }
// obj.name='hehe'
// obj.type='shuaige'
// delete obj.type
// console.log(obj)